package com.sky.up.u_jvm;

public class Lesson2 {

}

/**
# Java运行机制

## JVM启动流程
Java XXX -> 装载配置 -> 根据配置寻找JVM.dll -> 初始化JVM获得JNIEnv接口 -> 找到main方法
装载配置 -> 根据当前路径和系统版本寻找jvm.cfg
根据配置寻找JVM.dll -> JVM.dll为JVM主要实现
初始化JVM获得JNIEnv接口 -> JNIEnv为JVM接口，findClass等操作通过它实现

## JVM基本结构
### PC寄存器
- 每个线程拥有一个PC寄存器
- 在线程创建时创建
- 指向下一条指令的地址
- 执行本地方法时，PC的值为undefined
### 方法区
- 保存装载的类信息 ： 类型常量池、 字段，方法信息、 方法字节码
- 通常和永久区(Perm)关联在一起
- JDK7之后String等常量信息移到堆
### Java堆
- 和程序开发密切相关
- 应用系统对象保存在Java堆中
- 所有线程共享Java堆
- 对分代GC来说，堆也是分代的
- GC的主要工作区间
	eden s0 s1 tenured

### Java栈
- 线程私有
- 栈由一系列帧组成(因此Java栈也叫做帧栈)
- 帧保存一个方法的局部变量、操作数栈、常量池指针
- 每一次方法调用创建一个帧，并压栈


* 内存模型
* 编译和解释运行的概念

 



 */
